給定一個 linked list,回傳一個奇數點位排前面,偶數點位接續在奇數點位後面的 linked list
並且要使用 O(1)的空間複雜度與 O(n) 的時間複雜度
這題要同時處理奇數點與偶數點,讓他們分別指向下兩個節點即可
需要注意的是,偶數點一定會先指到 null ,所以在遍歷的時候要先確保 evenNode.next 是否為空
還有記得要把 evenHead 保留住
最後兩個 list arrange 完後才可以將兩者併在一起
class Solution:
def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
evenHead = head.next
evenNode = evenHead
oddNode = head
while evenNode and evenNode.next:
oddNode.next = oddNode.next.next
oddNode = oddNode.next
evenNode.next = evenNode.next.next
evenNode = evenNode.next
oddNode.next = evenHead
return head
今天晚上想去跳舞趕快來發個文 ><
到後面越寫越隨便,趁連假要來好好補完整(點頭